#ifndef MAINWINDOW1_H
#define MAINWINDOW1_H

#include <QMainWindow>
#include <QString>
#include <QDebug>
#include <QStandardItemModel>
#include "mystyleditemdelegate.h"
#include "databaseop.h"
#include <QtNetwork>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonDocument>
#include <QSqlQueryModel>
#include <QMessageBox>
#include <QMediaPlayer>
#include <QMediaPlaylist>

namespace Ui {
class MainWindow1;
}

class MainWindow1 : public QMainWindow
{
    Q_OBJECT

public:
    // 构造函数，初始化 MainWindow1 对象
    explicit MainWindow1(QWidget *parent = nullptr);

    // 析构函数，释放 MainWindow1 对象
    ~MainWindow1();

    // 解析 JSON 数据的函数
    void parseJson(QByteArray byteArray);

public slots:
    // 网络请求完成后的槽函数
    void replyFinished(QNetworkReply *reply);

private slots:
    // 按钮点击事件的槽函数
    void on_pushButton_clicked();

    // 表格视图双击事件的槽函数
    void on_tableView_doubleClicked(const QModelIndex &index);

    // 媒体播放器时长变化的槽函数
    void durationChangedSlot(qint64 duration);

    // 媒体播放器位置变化的槽函数
    void positionChangedSlot(qint64 position);

    // 水平滑块释放事件的槽函数
    void on_horizontalSlider_sliderReleased();

    // 按钮点击事件的槽函数
    void on_pushButton_5_clicked();

    // 更新正在播放的歌曲信息的槽函数
    void updateNowPlayingLabel(const QString &songName, const QString &artistName);


    void on_pushButton_4_clicked();

private:
    // UI 指针
    Ui::MainWindow1 *ui;

    // 数据库操作对象
    databaseop* mydatabase;

    // 网络访问管理器对象
    QNetworkAccessManager * manager;

    // 标准项模型对象
    QStandardItemModel * pModel;

    // 音乐 ID 列表
    QList<int> musicIdlist;

    // 媒体播放列表对象
    QMediaPlaylist* playlist;

    // 媒体播放器对象
    QMediaPlayer *player;

};

#endif // MAINWINDOW1_H
